package com.gimi.cloud.bbp.task.service;


import com.gimi.cloud.bbp.dto.task.ScheduleJobDTO;

import java.util.List;

/**
 * 定时任务相关service
 *
 * @author wbj
 * @version 1.0
 * @Description
 * @create 2018-01-08
 **/
public interface ScheduleJobService{
    /**
     * 获取定时任务列表
     * @param dto 查询参数
     * @param isPaging 是否分页 true：是，false：否
     * @return 查询结果
     * @throws Exception
     */
    List<ScheduleJobDTO> queryList(ScheduleJobDTO dto, boolean isPaging) throws Exception;

    /**
     * 保存或更新定时任务
     * @param dto 待保存或更新的定时任务
     * @return 保存结果
     * @throws Exception
     */
    ScheduleJobDTO save(ScheduleJobDTO dto) throws Exception;

    /**
     * 更新定时任务
     * @param dto 待更新的定时任务
     * @return
     * @throws Exception
     */
    ScheduleJobDTO update(ScheduleJobDTO dto) throws Exception;

    /**
     * 根据主键获取定时任务
     * @param dto
     * @param id 待获取的定时任务的主键
     * @return 获取结果
     * @throws Exception
     */
    ScheduleJobDTO load(ScheduleJobDTO dto,Object id) throws Exception;

    /**
     * 删除定时任务
     * @param dto
     * @param id 待删除的定时任务id
     * @param realDel 真删除 true：是，false：否
     * @return 删除结果
     * @throws Exception
     */
    int delete(ScheduleJobDTO dto,Object id,boolean realDel) throws Exception;

    /**
     * 启动定时任务
     * @param dto
     * @param jobIds 待启动的定时任务id
     * @throws Exception
     */
    void runJob(ScheduleJobDTO dto, Integer[] jobIds) throws Exception;

    /**
     * 批量更新定时任务状态
     * @param dto
     * @param jobIds 待更新的任务id
     * @param status 更新后的条数
     * @return 受影响的行数
     * @throws Exception
     */
    int batchUpdateStatus(ScheduleJobDTO dto,Integer[] jobIds,int status) throws Exception;

    /**
     * 暂停任务
     * @param dto
     * @param jobIds 待暂停的任务id
     * @throws Exception
     */
    void pauseJob(ScheduleJobDTO dto, Integer[] jobIds) throws Exception;

    /**
     * 恢复任务
     * @param dto
     * @param jobIds 待恢复的任务id
     * @throws Exception
     */
    void resumeJob(ScheduleJobDTO dto,Integer[] jobIds) throws Exception;

    /**
     * 重持久化定时任务
     * @param dto 待重持久化的定时任务
     * @throws Exception
     */
    void recreateJob(ScheduleJobDTO dto) throws Exception;
}
